Graphical User Interfaces (GUIs) have long been employed to facilitate user data input and/or to display output data. By way of example, tables have long been employed to display data in the form of rows and columns, as well as to allow the user to input data into the rows and columns of the table. Charts, graphs, pop-up dialogs, and the like are other examples of GUIs that have been employed.
The process of creating a GUI for a particular task has long been the province of programmers. Programmers typically assess the task to be performed, in terms of the required inputs and outputs, and create a GUI to accomplish that specific task. On a large software project, however, there may be a large number of GUIs that are similar (but may not be exactly identical) for handling certain types of input/output tasks. For example, a manufacturer may employ a table to enter/display data pertaining to employees, another table to enter/display data pertaining to sales information, and yet another table to enter/display data pertaining to inventory. Although a table is involved in each of these examples, the labels, the number of rows and columns, the functions (and the buttons for allowing the user to access those functions), and the data types of the cells therein may differ.
Currently, each GUI would be created by programmers from low-level graphical components, such as those provided with Java Swing™ (JS), which is part of the Java Foundation Class (JFC) by Sun Microsystems, Inc. of Mountain View, Calif. FIG. 1 is a flow chart showing exemplary prior art steps that may be taken by a Java Swing programmer to create one of the table GUIs described earlier, e.g., the table GUI for entering/displaying data pertaining to employees. In step 102, the JS low-level graphical components necessary to implement the employee table are invoked. In this case, it may be a table with 7 columns, for example, to capture the seven attributes associated with each employee.
In step 104, the JS low-level graphical component for creating the table title is invoke (e.g., to label the table “Employee of ABC Manufacturing Company”). In step 106, the JS low-level graphical components for creating the buttons to allow the user to access the desired functions are invoked. The desired functions may be, for example, add an employee, delete an employee, search for an employee, and the like.
In step 108, the functions themselves are coded. In other words, the function of adding an employee is actually coded in step 108. This function may involve, for example, inserting a new row into the table, and allowing the computer operator to fill out the various cells in the new row regarding the new employee.
In step 110, the JS low-level graphical components are integrated, e.g., to enable the “add employee” function to be invoked when the “add employee” button is clicked. In step 112, the employee table GUI is tested. Once testing/debugging is completed, the table GUI may be accepted for use in the product (step 114).
Although GUIs can be created from low-level graphical components, such as JS components, there are disadvantages. For example, a given product may involve hundreds or thousands of GUIs. If every GUI must be created from scratch from low-level graphical components, a significant amount of time is required to complete the GUI portion of the product alone. Furthermore, since each GUI involves the coding of the functions and the integration of low-level components and functions, a significant level of skill is required to create, test, and deploy a GUI. This high level of skill limits the number of people that can be assigned to the GUI creation task, as well as raising the cost of product development.
Additionally, given the large number of GUIs involved in a given product, there may be dozens of programmers working on GUIs. These programmers may have different preferences as to the “look and feel” of the GUIs. Accordingly, an “items sold” table GUI may have an entirely different “look and feel” from an inventory table GUT although they both pertain to items stocked by the company. The lack of uniformity in the look-and-feel among different GUIs in a single product may disadvantageously lower the level of user-friendliness of the product and/or give the final product a less-than-polished appearance.